#include "xmlparser.h"
#include <QFile>
#include <QDomDocument>
#include <QDebug>

XmlParser::XmlParser()
{
}

XmlParser &XmlParser::GetInstance()
{
    static XmlParser oXmlParser;
    return oXmlParser;
}

int XmlParser::Read(std::string &strFileName)
{
    QFile file(QString::fromStdString(strFileName));
    if (!file.open(QIODevice::ReadOnly | QFile::Text)) {
        qDebug()<<"open for read error..." ;
    }
    QString errorStr;
    int errorLine;
    int errorColumn;

    QDomDocument doc;
    if (!doc.setContent(&file, false, &errorStr, &errorLine, &errorColumn)) {
        qDebug()<<"setcontent error..." ;
        file.close();
    }
    file.close();
    QDomElement root = doc.documentElement();
    if (root.tagName() != "Messages") {
        qDebug()<<"root.tagname != Messages..." ;
    }
    QDomNode node = root.firstChild();
    while(!node.isNull())
    {
        if(node.isElement())
        {
            QDomElement element = node.toElement();
            qDebug() << qPrintable(element.tagName());
            QDomNodeList list = element.childNodes();


//            for(int i = 0; i < list.count(); ++i)
//            {
//                QDomNode nodechild = list.at(i);
//                if(nodechild.isElement())
//                {
//                    //qDebug() << "    " << qPrintable(nodechild.toElement().tagName()) << qPrintable(nodechild.toElement().text());
//
//            }
            if(list.size() == 2)
            {
                mBimapMessage.left.insert(
                            make_pair(list.at(0).toElement().text().toStdString(),
                                      list.at(1).toElement().text().toStdString()));
                mBimapMessage.right.insert(
                            make_pair(list.at(0).toElement().text().toStdString(),
                                      list.at(1).toElement().text().toStdString()));
            }
            else
            {
                //LERROR << "xml format error";
                return -1;
            }

        }
        node = node.nextSibling();
    }
}
